<?php
namespace Act\Os;
use Lib\ErrorMessage;
class Module extends Backend{
	public function doGet(){
		$module_id = get('module_id',0,'absint');
		$this->checkParam($module_id);
		$module_mod = model('#Module','adm_');
		$temp = $module_mod->getModuleById($module_id );
		if(empty($temp)){
			return $this->error(ErrorMessage::MODULE_NOT_EXIST,"/os/modules");
		}
		

		$menus = model('#MenuUrl','adm_')->getListByModuleId($module_id );
		$module_options_list = $module_mod->getModuleForOptions ();

		$this->assign(array(
			'module_options_list'=>$module_options_list,
			'menus'=>$menus,
			'module_id'=>$module_id,
		));
		$this->display('index.php');
	}

	public function doPost(){
		$module_id = get('module_id',0,'absint');
		$this->checkParam($module_id);
		$module_mod = model('#Module','adm_');
		$temp = $module_mod->getModuleById($module_id );
		if(empty($temp)){
			return $this->error(ErrorMessage::MODULE_NOT_EXIST,"/os/modules");
		}

		$module = post('module');
		$menu_ids = post('menu_ids');
		if(empty($module) || empty($menu_ids)){
			$this->alert("error",ErrorMessage::NEED_PARAM);
		}else{
			if($module !=1){
				foreach ($menu_ids as $menu_id){
					if($menu_id<=100){
						return $this->error ('系统菜单不能转移到其它模块','/os/modules');
					}
				}
			}
			$menu_ids=implode(',',$menu_ids);
			$update_data = array ('module_id' => $module);
			$result = model('#MenuUrl','adm_')->batchUpdateMenus ( $menu_ids,$update_data );
			
			if ($result>=0) {
				model('#SysLog','adm_')->addLog(session('user_info')['user_name'], 'MODIFY', 'MenuUrl' ,$menu_ids, json_encode($update_data) );
				return $this->success ('更新完成','os/modules');
			} else {
				$this->alert("error");
			}
		}

		$menus = model('#MenuUrl','adm_')->getListByModuleId($module_id );
		$module_options_list = $module_mod->getModuleForOptions ();

		$this->assign(array(
			'module_options_list'=>$module_options_list,
			'menus'=>$menus,
			'module_id'=>$module_id,
		));
		$this->display('index.php');
	}

	public function doAdd(){
		if(is_post()){
			$module_name = $module_desc = $module_sort = $module_url = $module_icon ='';
			extract ( $_POST, EXTR_IF_EXISTS );
			$module_mod = model('#Module','adm_');
			$exist = $module_mod->getModuleByName($module_name);
			if($exist){
				$this->alert("error",ErrorMessage::NAME_CONFLICT);
			}else if($module_name =="" || $module_url == ""){
				$this->alert("error",ErrorMessage::NEED_PARAM);
			}else{
				$input_data = array ('module_name' => $module_name, 'module_desc' => $module_desc, 'module_url' => $module_url ,'module_sort' =>$module_sort,'module_icon' =>$module_icon);
				$module_id = $module_mod->addModule($input_data);
				if ($module_id) {
					model('#SysLog','adm_')->addLog (session('user_info')['user_name'], 'ADD', 'Module' , $module_id, json_encode($input_data) );
					return $this->success ('模块添加成功','os/modules');
				}
			}
		}
		$this->display('from.php');
	}

	public function doUpdate(){
		$module_id = $module_name = $module_sort = $module_url = $module_desc = $module_icon = $online = '';
		extract($_REQUEST,EXTR_IF_EXISTS);
		$this->checkParam($module_id);
		$module_mod = model('#Module','adm_');
		$module = $module_mod->getModuleById($module_id );
		if(empty($module)){
			return $this->error(ErrorMessage::MODULE_NOT_EXIST,"os/modules");
		}
		if(is_post()){
			if($module_name =="" || $module_url == "" ){
				return $this->alert("error",ErrorMessage::NEED_PARAM);
			}else{
				$update_data = array ('module_name' => $module_name, 'module_desc' => $module_desc, 'module_icon' => $module_icon ,'module_url' => $module_url ,
								'module_sort' =>$module_sort);
				if($module_id >1){
					$update_data['online'] =$online;
				}
				$result = $module_mod->updateModuleInfo($module_id,$update_data);
				if ($result>=0) {
					model('#SysLog','adm_')->addLog (session('user_info')['user_name'], 'MODIFY', 'Module' ,$module_id, json_encode($update_data) );
					return $this->success('更新完成','os/modules');
				} else {
					return $this->alert("error");
				}
			}
		}
		$module_online_options = array("1"=>"在线","0"=>"下线");
		$this->assign ('module', $module);
		$this->assign ('module_online_options', $module_online_options);
		$this->display ('update.php');
	}

	public function doDelete(){
		$module_id = get('module_id',0);
		$this->checkParam($module_id);
		$module_mod = model('#Module','adm_');
		$menus = $module_mod->getModuleMenu($module_id);
		if(sizeof($menus)>0){
			return $this->error(ErrorMessage::HAVE_FUNC);
		}else if(intval($module_id) === 1){
			return $this->error(ErrorMessage::CAN_NOT_DELETE_SYSTEM_MODULE);
		}else{
			$module=$module_mod->getModuleById($module_id);
			$result = $module_mod->delModule ( $module_id );
			if ($result) {
				model('#SysLog','adm_')->addLog (session('user_info')['user_name'], 'DELETE', 'Module' ,$module_id, json_encode($module) );
				$this->success ('模块删除成功','os/modules');
			}
		}
	}

}